/*
 * Copyright 2009 Jiwei Xu (http://www.xujiwei.com)
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License. You may obtain a copy of
 * the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations under
 * the License.
 */

provide("Tools.ZoomTool");

require("Tools.ToolBase");
require("Objects.RectObj");

ZoomTool = Class(ToolBase, (function() {
    var isMouseDown = false,

        selectRect = new RectObj();

    selectRect.IsFill = false;
    selectRect.LineWidth = 1;
    selectRect.StrokeStyle = "black";

    var startPos = {X:0, Y:0};

    return {
        OnLButtonDown : function(view, e) {
            if (!isMouseDown) {
                isMouseDown = true;

                //view.GetDocument().SelectNone();
                selectRect.MoveHandleTo(0, e);
                selectRect.MoveHandleTo(2, e);
                selectRect.IsSelected = false;
                view.GetDocument().Add(selectRect);
            }
        },

        OnLButtonUp : function(view, e) {
            view.GetDocument().Remove(selectRect);

            if (isMouseDown) {
                selectRect.MoveHandleTo(2, e);

                var rect = {
                    Left : selectRect.Bounds.Left,
                    Top : selectRect.Bounds.Top,
                    Right : selectRect.Bounds.Right,
                    Bottom : selectRect.Bounds.Bottom,
                    Width : selectRect.Bounds.Width,
                    Height : selectRect.Bounds.Height
                };

                    console.log(e);

                if (!e.altKey) {
                    view.ZoomIn(rect);
                } else {
                    view.ZoomOut(rect);
                }

                view.Update();
            }

            isMouseDown = false;
        },

        OnMouseMove : function(view, e) {
            if (isMouseDown) {
                selectRect.MoveHandleTo(2, e);
                view.Update();
            }
        }
    };
})());

new ZoomTool();